/*
 * RSBool.cpp
 *
 *  Created on: 2010/03/17
 *      Author: alexandre
 */

#include "RSBool.h"
#include "RSSerializer.h"

namespace Realsphere {

    RSBool::RSBool ( ) :
        RSValueElement ()
    {
        SetTag( RS_BOOL_TAG, false );
    }


    RSBool::RSBool ( const QString& rScopeId ) :
        RSValueElement ( rScopeId )
    {
        SetTag( RS_BOOL_TAG, false );
    }


    RSBool::RSBool ( const bool& rValue ) :
        RSValueElement ()
    {
        SetTag( RS_BOOL_TAG, false );
        SetValue ( rValue, false );
    }


    RSBool::RSBool ( const QString& rScopeId, bool& rValue ) :
            RSValueElement ( rScopeId )
    {
        SetTag( RS_BOOL_TAG, false );
        SetValue ( rValue, false );
    }


    RSValueType RSBool::ValueType () const
    {
        return RS_BOOL;
    }


    RSDataSize RSBool::SizeOf () const
    {
        return sizeof(bool);
    }


    RSDataPointer RSBool::DataPointer()
    {
        return &mValue;
    }


    QString RSBool::ToString () const
    {
        return RSSerializer::serialize(mValue);
    }

    bool RSBool::Value () const
    {
        return mValue;
    }


    void RSBool::SetValue ( const bool& rValue, bool rEmit )
    {
        mValue = rValue;
        if ( rEmit )
            emit ValueChanged();
    }


    void RSBool::SetValue ( const RSBool& rValue, bool rEmit )
    {
        SetValue ( rValue.Value(), rEmit );
    }


    RSBool& RSBool::operator=( const bool& rValue )
    {
        SetValue( rValue );
        return *this;
    }

    RSBool& RSBool::operator=( const RSBool& rValue )
    {
        SetValue( rValue );
        return *this;
    }

}
